From 633979eeb74ecf9200a2f86eff9ed3f09c12bea9 Mon Sep 17 00:00:00 2001 From: David Vrabel Date: Mon, 14 May 2012 16:54:52 +0100 Subject: [PATCH] x86/hvm: put value of emulated register reads into trace records The tracepoint for emulated MMIO and I/O port reads was always before the emulated read or write was done. This means that for reads the register value in the trace record was always 0. So for reads, move the tracepoint until the register value is available. Signed-off-by: David Vrabel Committed-by: Keir Fraser --- xen/arch/x86/hvm/emulate.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index 82efd1aa45..3a7fe95293 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -191,7 +191,8 @@ static int hvmemul_do_io( p->df = df; p->data = value; - hvmtrace_io_assist(is_mmio, p); + if ( dir == IOREQ_WRITE ) + hvmtrace_io_assist(is_mmio, p); if ( is_mmio ) { @@ -232,6 +233,9 @@ static int hvmemul_do_io( } finish_access: + if ( dir == IOREQ_READ ) + hvmtrace_io_assist(is_mmio, p); + if ( p_data != NULL ) memcpy(p_data, &vio->io_data, size); -- 2.30.2